#ifndef QTDBUSOBJECTMANAGER_P_H
#define QTDBUSOBJECTMANAGER_P_H

#include <qtdbusextrasglobal.h>

#include <private/qtdbusnode_p.h>

#include <QDBusConnection>
#include <QDBusObjectPath>

#include <optional>

class QtDBusNode;
class QtSignalCatcher;
class QtDBusProperties;
struct QTDBUSEXTRAS_EXPORT QtDBusObjectManagerPrivate : public QtDBusNode
{
public:
    QtDBusObjectManagerPrivate();

    std::optional<QString> subPath(QString path) const;
    QDBusObjectPath objectPath(const QString &subPath) const;

public:
    QString prefix;
    std::optional<QDBusConnection> connection;
    QDBusConnection::VirtualObjectRegisterOption option;

    QtSignalCatcher *catcher;
    QtDBusProperties *properties;
    static const QMetaMethod destroyedSignal;

    friend class QtDBusObjectManager;
};

#endif // QTDBUSOBJECTMANAGER_P_H
